#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_log.h"
#include "driver/gpio.h"
#include "sys/unistd.h"
void WTN6_Init(void)
{
    gpio_config_t gpio_conf = {
        .intr_type = GPIO_INTR_DISABLE,
        .mode = GPIO_MODE_OUTPUT,
        .pin_bit_mask = (1ULL << GPIO_NUM_9),
        .pull_down_en = 0,
        .pull_up_en = 0};
    gpio_config(&gpio_conf);
}
void WTN6_SendData(uint8_t data)
{
    gpio_set_level(GPIO_NUM_9, 0);
    vTaskDelay(10);
    for (uint8_t i = 0; i < 8; i++)
    {
        if (data & 0x01)
        {
            gpio_set_level(GPIO_NUM_9, 1);
            usleep(600);
            gpio_set_level(GPIO_NUM_9, 0);
            usleep(200);
        }
        else
        {
            gpio_set_level(GPIO_NUM_9, 1);
            usleep(200);
            gpio_set_level(GPIO_NUM_9, 0);
            usleep(600);
        }
        data >>= 1;
    }
    gpio_set_level(GPIO_NUM_9, 1);
    vTaskDelay(10);
}
#define sayNum(x) WTN6_SendData(x + 1)
#define sayIllegalOperation() WTN6_SendData(28)
void app_main(void)
{
    WTN6_Init();
    sayNum(1);
    // sayIllegalOperation();
    while (1)
    {
        vTaskDelay(1000 / portTICK_PERIOD_MS);
    }
}